How to Get Data Between Storage and the GPU at the Speed of Light

CJ Newburn (Distinguished Engineer, NVIDIA GPU Cloud), Vikram Maddimedi (Senior Researcher, NVIDIA Research), Prashant Pralhad (Senior Engineer, NVIDIA GPU Cloud)

目录

  1. 核心信息与趋势
    1. 核心信息
    2. 趋势
  2. GPU与数据:从计算中心到数据中心
    1. GPU:传统与新兴应用的核心引擎
    2. 应用分类:瓶颈、动态性、粒度
    3. 新型 GPU 涵盖计算中心和数据中心型计算
    4. 数据层次结构
  3. 新兴数据密集型应用
    1. 新的应用类别
    2. 大语言模型(LLM)训练
    3. 大语言模型(LLM)推理
    4. Nemo Retriever - 加速 RAG 推理
    5. 向量搜索/数据库
    6. 图神经网络 (GNN
  4. GPU数据访问技术深度解析:GPUDirect Storage 与 SCADA
    1. 数据访问技术概述
    2. NVIDIA GPUDirect Storage (GDS) - CPU发起的加速
    3. SCADA - GPU发起的规模化数据访问
  5. 生态系统、未来展望与行动倡议
    1. 合作伙伴与认证计划
    2. 下一代存储 (Storage-Next
    3. 行动倡议

1. 核心信息与趋势

1.1 核心信息

1.2 趋势

当前系统架构中正在出现的一些值得注意的考虑因素:

2. GPU与数据:从计算中心到数据中心

2.1 GPU:传统与新兴应用的核心引擎

2.2 应用分类:瓶颈、动态性、粒度

构建存储解决方案的重点在于理解应用需求。应用可以根据瓶颈和存储访问模式进行分类:

传统上,GPU 的重点是计算密集型应用。而推理领域的创新爆炸式增长正在推动新技术来填补空白。

应用分类图,Page 6
应用分类图,Page 6

2.3 新型 GPU 涵盖计算中心和数据中心型计算

计算密集型和数据密集型应用对 GPU 架构的不同部分提出了要求。下表对比了这两种模式下的关键技术点:

计算中心与数据中心型计算对比表,Page 8
计算中心与数据中心型计算对比表,Page 8

2.4 数据层次结构

数据的位置、访问方式和引用方式构成了复杂的数据层次结构。

数据层次结构图,Page 10
数据层次结构图,Page 10

3. 新兴数据密集型应用

3.1 新的应用类别

3.2 大语言模型(LLM)训练

LLM 训练是大型系统的主要消费者。

LLM 训练流程图,Page 12
LLM 训练流程图,Page 12

3.2.1 LLM 训练中的存储

LLM 训练的存储特征在集群层面聚合,而在节点层面影响很小。

LLM 训练中的数据移动,Page 13
LLM 训练中的数据移动,Page 13

3.2.2 LLM 训练的检查点(Checkpointing)

存储在 TB/s 级别、节点级别和非常大的规模下面临性能挑战。

LLM 训练检查点性能图,Page 14
LLM 训练检查点性能图,Page 14

3.3 大语言模型(LLM)推理

推理的瓶颈遍布整个网络、系统、存储和上下文利用。

LLM 推理 Prefill 和 Decode 阶段示意图,Page 15
LLM 推理 Prefill 和 Decode 阶段示意图,Page 15

3.3.1 推理中的 KV 上下文

推理中的 KV 上下文示意图 (Page 16)
推理中的 KV 上下文示意图 (Page 16)

3.3.2 NVIDIA Dynamo

NVIDIA Dynamo 是一个用于大语言模型推理的动态调度系统。其架构如下图所示:

NVIDIA Dynamo 架构图 (Page 17)
NVIDIA Dynamo 架构图 (Page 17)

3.3.3 KV 缓存内存分层

通过平衡延迟、用户体验和总拥有成本 (TCO) 来实现。

KV 缓存需求与内存分层金字塔 (Page 18)
KV 缓存需求与内存分层金字塔 (Page 18)

3.4 Nemo Retriever - 加速 RAG 推理

该系统通过测量 RAG+LLM 集成模型的运行时间和内存使用来进行优化。

工作流程:
1. 数据摄入: 从企业数据源(如文档、图片、表格)提取信息。
2. 嵌入与索引: 使用嵌入模型 (Embedding Model) 将数据转换为向量,并构建索引 (Vector DB)。
3. 检索: 当用户提出查询时,首先对查询进行嵌入,然后通过检索器 (Retriever) 从向量数据库中找到最相关的上下文。
4. 生成: 将原始查询和检索到的上下文一起输入到大语言模型 (LLM) 中,生成最终的、包含企业知识的洞察。
5. 核心理念: 为数据消费、索引和 LLM 提供一个合理的上下文。

Nemo Retriever 加速 RAG 推理流程图 (Page 19)
Nemo Retriever 加速 RAG 推理流程图 (Page 19)

3.5 向量搜索/数据库

3.5.1 索引与搜索

3.5.2 基础设施与数据粒度

向量搜索数据库的基础设施分层示意图 (Page 21)
向量搜索数据库的基础设施分层示意图 (Page 21)

3.6 图神经网络 (GNN)

SCADA 可用于从磁盘上的文件系统数据库加载节点嵌入,以构建一个 GNN。

图神经网络构建过程 (Page 22)
图神经网络构建过程 (Page 22)

3.6.1 GNN 模型构建

GNN 模型构建与 SCADA 关系图 (Page 23)
GNN 模型构建与 SCADA 关系图 (Page 23)

3.6.2 GNN+LLM

GNN 与 LLM 结合示意图 (Page 24)
GNN 与 LLM 结合示意图 (Page 24)

3.6.3 GNN+LLM RAG (GNN 为 LLM 提供信息)

在推理时,给定一个查询:
1. 分词与编码: 使用 LLM 编码器对查询进行分词和编码。
2. 检索: 从知识图谱 (KG) 中检索与查询相关的子图,并使用 GNN 对其进行编码。
3. 联合嵌入: 将 GNN 的节点嵌入与 LLM 的嵌入联合起来。
4. 解码与生成: 让 LLM 解码器对联合嵌入进行解码,并生成响应。

GNN+LLM RAG 工作流程图 (Page 25)
GNN+LLM RAG 工作流程图 (Page 25)

4. GPU数据访问技术深度解析:GPUDirect Storage 与 SCADA

4.1 数据访问技术概述

4.1.1 PCIe 数据路径概览

数据从存储到 GPU 的路径有多种,其效率直接影响整体性能。

Page 31: 展示了从本地和远程存储到GPU的不同数据路径,包括通过CPU和直接通过NIC/PCIe交换机。
Page 31: 展示了从本地和远程存储到GPU的不同数据路径,包括通过CPU和直接通过NIC/PCIe交换机。

4.1.2 数据访问的发起者:CPU vs. GPU

数据访问可以由 CPU 或 GPU 发起,两种模式适用于不同的场景。

Page 32: CPU发起的GPUDirect Storage与GPU发起的SCADA在数据访问模式上的对比。
Page 32: CPU发起的GPUDirect Storage与GPU发起的SCADA在数据访问模式上的对比。

4.1.3 数据访问的粒度:粗粒度 vs. 细粒度

饱和 PCIe 带宽所需的 IOPS 是数据访问粒度的函数。

4.2 NVIDIA GPUDirect Storage (GDS) - CPU发起的加速

GDS 是一套旨在加速数据在存储和 GPU 之间传输的技术。

4.2.1 GDS 的关键技术与优势

GDS 的核心是建立一个从存储到 GPU 的直接数据路径,从而带来多重好处。

Page 33: GDS架构图,展示了数据如何绕过CPU和系统内存,通过PCIe交换机直接从存储流向GPU。
Page 33: GDS架构图,展示了数据如何绕过CPU和系统内存,通过PCIe交换机直接从存储流向GPU。

4.2.2 GDS 的两种接口:cuFile 和 cuObject

NVIDIA 为 GDS 提供了两种主要接口以适应不同应用场景。

4.2.3 GDS - cuObject/S3oRDMA 性能评估

cuObject 是一项提议中的技术,目前正处于产品评估阶段,主要面向本地部署。

Page 36: cuObject/S3oRDMA 客户端-服务器架构及其与传统TCP的性能对比。
Page 36: cuObject/S3oRDMA 客户端-服务器架构及其与传统TCP的性能对比。

性能对比 (数据由 Cloudian 提供)

指标 TCP RDMA 加速比
吞吐量 S3oRDMA 1x 2x 2x
CPU 使用率 (% logical cores) 11 5.7 47% 降低

测试环境: 分布式 S3 性能基准测试。配置: GPU-Mellanox (1 个服务器节点 vs 1 个客户端节点), 200Gbps NICs, RDMA, MTU of 4096.

4.2.4 应用案例:使用软件定义对象存储加速推理

在推理任务中,上下文的构建依赖于输入 token 序列的长度。当序列变长时,存在一个权衡:是重新计算还是将状态溢出(spill)到磁盘/KV 存储。

Page 37: 图表展示了在不同文件大小下,重新计算、从对象存储加载和从文件系统加载“首个Token生成时间”的对比。
Page 37: 图表展示了在不同文件大小下,重新计算、从对象存储加载和从文件系统加载“首个Token生成时间”的对比。

4.2.5 GDS - cuFile 的启用效果

下表展示了在不同工作负载下,启用 GDS cuFile 带来的性能提升。

Page 38: GDS-cuFile在不同应用中的性能影响对比表。
Page 38: GDS-cuFile在不同应用中的性能影响对比表。
工作负载 OEM H100 with PCIe Gen 5e GH200
模型加载: TRT-LLM 2.12x 1.0x
检查点保存: PyTorch (RAC) 6x 1.61x
Tensor 加载/存储: PyTorch 5.23x / 1.53x 3.19x / 1.00x
基因组学: Parabricks 1.41x 1.00x
HPC: HDF5 in Legate, 8 way 4.2x

4.3 SCADA - GPU发起的规模化数据访问

4.3.1 SCADA 核心理念与架构

SCADA(Scaled, Accelerated Data Access)使成千上万的 GPU 线程能够以细粒度的方式加速对存储中无边界数据的访问,旨在将 GPU 转变为一个自主的、高度并行的数据访问引擎。

SCADA 架构示意图,Page 9
SCADA的 tiered view 架构图,展示了GPU客户端和数据服务器之间的交互。

4.3.2 SCADA 服务的演进

SCADA 的服务从基础功能开始,逐步扩展。

Page 40: SCADA服务演进路径图。
Page 40: SCADA服务演进路径图。

4.3.3 性能结果:GPU 作为数据访问引擎

Page 41: GPU作为数据访问引擎的性能流水线图。
Page 41: GPU作为数据访问引擎的性能流水线图。

4.3.4 客户端/服务器拓扑

SCADA 采用客户端/服务器架构。

Page 42: SCADA的客户端/服务器拓扑结构图。
Page 42: SCADA的客户端/服务器拓扑结构图。

4.3.5 存储服务器配置示例

Page 43: 一种可能的SCADA存储服务器配置方案。
Page 43: 一种可能的SCADA存储服务器配置方案。

4.3.6 客户端到服务器的批量 IOPS 性能

Page 44: SCADA在客户端和服务器之间批量读写IOPS的性能图。
Page 44: SCADA在客户端和服务器之间批量读写IOPS的性能图。

4.3.7 SCADA 的应用适用性

SCADA 并非适用于所有场景,以下是其最适合的应用特征:

4.3.8 SCADA 的优势:规模、TCO与性能

规模 (Scale)
总拥有成本 (TCO)
性能 (Performance)

4.3.9 SCADA 的总拥有成本 (TCO)

SCADA 的 TCO 比密集本地内存或估算方案低了两个数量级。

SCADA TCO 对比图及系统架构 (Page 47)
SCADA TCO 对比图及系统架构 (Page 47)
基准测试情景:

图中比较了三种配置下的训练时间(每个epoch的小时数)与问题规模(TB)的关系:
1. Vanilla(无SCADA): 仅使用GPU内存和DRAM。
2. SCADA Cache: 使用带缓存的SCADA方案。
3. SCADA Remote Storage: 使用远程存储的SCADA方案。

系统配置案例:

覆盖了三种基于类DGX计算节点的案例:
* Vanilla SCADA: 基于问题容量/TB/DDR的模型。
* driveHEAVY SCADA: 基于驱动器容量的模型,每1 GPU配备8个驱动器,其他工作负载预计也需为GPU付费。
* driveLIGHT/disaggregated: 每个客户端DIMM中仅有1个GPU,远程存储盒中有24个驱动器。

核心假设:
功耗 (Power)

5.3 行动倡议

让我们共同为展示CPU角色不再具有广泛单一权威性的发展奠定基础。

致存储介质技术专家:

致存储提供商和云服务提供商 (CSP):

致应用程序开发者和用户:

致基础设施开发者: